package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;

import models.Comentario;

public class DAOComentario {

	public void inserir(Comentario comentario) {
		try {
			// Comando SQL que vai ser enviado ao banco
			String insert = "insert into comentario(login, comentario, idfilmania) values(? ,? , ?)";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(insert);
			// Seta parâmetros do comando SQL
			statement.setString(1, comentario.login);
			statement.setString(2, comentario.comentario);
			statement.setInt(3, comentario.idfilmania);

			// Executa insert no banco de dados
			statement.executeUpdate();
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}

	}

	public void excluir(Comentario m) {
		try {
			// Comando SQL que vai ser enviado ao banco
			String delete = "delete from comentario where idcomentario = ?";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(delete);
			// Seta parâmetros do comando SQL
			statement.setInt(1, m.idcomentario);
			// Executa update no banco de dados
			statement.executeUpdate();
		} catch (SQLException e) {

			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}

	}

	public Set<Comentario> porFilme(Integer idFilme) {
		Set<Comentario> objs = new HashSet<Comentario>();
		try {
			// Comando SQL que vai ser enviado ao banco
			String query = "select idfilmania, login, comentario, idcomentario from comentario where idfilmania=? order by idcomentario";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(query);
			// Seta parâmetros do comando SQL
			statement.setInt(1, idFilme);
			// Execução do comando SQL e retorno como ResultSet
			ResultSet resultSet = statement.executeQuery();
			// Iteração no ResultSet
			while (resultSet.next()) {
				Comentario obj = new Comentario();
				obj.idfilmania = resultSet.getInt(1);
				obj.login = resultSet.getString(2);
				obj.comentario = resultSet.getString(3);
				obj.idcomentario = resultSet.getInt(4);
				objs.add(obj);
			}
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}
		return objs;
	}

}
